package anet

import (
	"time"

	"gitee.com/AlexWoo/arpc/alog"
)

func getMessage(addr string, c Conn, m *Msg) *message {
	msg := &message{
		addr: addr,
		c:    c,
		m:    m,
		ti:   nil,
	}

	alog.LogDebug(anetLctx, "getMessage %p [%s]", msg, msg.m.Str())

	return msg
}

func putMessage(msg *message) {
	alog.LogDebug(anetLctx, "putMessage %p [%s] timer[%p]", msg, msg.m.Str(), msg.ti)

	delTimer(msg.ti)
	msg.ti = nil
}

type message struct {
	addr string
	c    Conn
	m    *Msg
	ti   *timer
}

func (msg *message) setRecvTimer(s *session, e time.Duration) {
	msg.ti = addTimer(e, s.bn.event, getEvent(s.name, eventType_recvTimeout, msg.m.SerialId))
}

func (msg *message) setSendTimer(s *session, e time.Duration) {
	msg.ti = addTimer(e, s.bn.event, getEvent(s.name, eventType_sendTimeout, msg.m.SerialId))
}
